import CookikService from '@/utils/cookie-service';
import { createRouter, createWebHistory } from 'vue-router'

// 创建路由器实例
const router = createRouter({
    // 设置路由的历史模式为 HTML5 模式，并获取项目的基础路径
    history: createWebHistory(import.meta.env.BASE_URL),
    routes: [
        {
            path: '/oj/login',
            name: 'login',
            // 懒加载方式导入登录页面组件
            component: () => import('@/views/Login.vue'),
        },
        {
            path: '/',
            redirect: '/oj/login',
        },
        {
            path: '/oj/layout',
            name: 'layout',
            component: () => import('@/views/Layout.vue'),
            children: [
                {
                    path: 'question',
                    name: 'question',
                    component: () => import('@/views/Question.vue'),
                },
                {
                    path: 'exam',
                    name: 'exam',
                    component: () => import('@/views/Exam.vue'),
                },
                {
                    path: 'updateExam',
                    name: 'updateExam',
                    component: () => import('@/views/UpdateExam.vue'),
                },
                {
                    path: 'cuser',
                    name: 'cuser',
                    component: () => import('@/views/Cuser.vue'),
                },
            ]
        },
    ]
})

router.beforeEach((to, from, next) => { // 设置全局路由守卫
    // 检查是否存在用户的 token，判断用户是否已登录
    if (CookikService.getToken()) {
        // 如果用户已登录并尝试访问登录页面，则重定向到用户首页
        if (to.path === '/oj/login') {
            next('/oj/layout/cuser'); // 跳转到用户页面
        }
        else {
            next(); // 已登录用户访问其他页面，直接通过
        }
    }
    else {
        // 如果用户未登录，则允许访问不需要登录的路由
        next(); // 直接放行未登录状态的用户
    }
});


// 导出路由器实例，以便在应用中使用
export default router
